const {resolve} = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: './src/index.js',

    output: {
        filename: 'built.js',
        path: resolve(__dirname, 'build')
    },

    module: {
        rules: [
            // loader配置
            {
                test: /\.less$/,
                // 要使用多个loader处理use
                use: [
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            },

            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },

            {
                // 问题：默认处理不了html中img图片
                // 处理图片资源
                test: /\.(jpg|png|gif)$/,
                // 使用一个loader
                // 下载：url-loader    file-loader
                loader: 'url-loader',
                options: {
                    // 图片大小小于8KB，就会被base64处理
                    // 优点：减少请求数量（减轻服务器压力）
                    // 缺点：图片体积会更大（文件请求速度更慢）
                    limit: 8 * 1024,
                    // 问题：因为url-loader默认使用ES6模块化解析，而html-loader引入图片是commonjs
                    // 解析时会出现问题：[Object Module]
                    // 解决：关闭url-loader的ES6模块化，使用commonjs解析
                    esModule: false,
                    // 给图片进行重命名
                    // `[hash:10]取图片hash的前10位
                    // [ext]去文件原来的扩展名
                    name: '[hash:10].[ext]'
                }
            },

            {
                test: /\.html$/,
                // 处理HTML文件的img图片（负责引入img，从而能被url-loader进行处理）
                loader: 'html-loader',
                options: {
                    esModule: false
                }
            }
        ]
    },

    plugins: [
        // plugins配置
        new HtmlWebpackPlugin({
            template: './src/index.html'
        })
    ],

    mode: 'development'
}